package cn.joeg.app.css.util.date;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

import java.util.Date;

/**
 * Description: 基于 joda 的时间格式化工具类
 */
public class JodaDateHelper {

    /**
     * 格式化时间
     *
     * @param date    需要格式化的时间
     * @param pattern 时间格式
     * @return 格式化后的字符串
     */
    public static String formatDate(Date date, String pattern) {
        return new DateTime(date).toString(pattern);
    }

    /**
     * 解析时间字符串
     *
     * @param dateStr 时间字符串
     * @param pattern 相应的格式
     * @return 解析后的Date
     */
    public static Date parseDate(String dateStr, String pattern) {
        DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(pattern);
        return DateTime.parse(dateStr, dateTimeFormatter).toDate();
    }

    /**
     * 增加/减少 天数
     *
     * @param date 时间
     * @param days 增加(正整数)或减少(负整数)的天数
     * @return 增加后的时间
     */
    public static Date addDays(Date date, int days) {
        DateTime dateTime = new DateTime(date);
        DateTime dt = dateTime.plusDays(days);
        return dt.toDate();
    }

    /**
     * 增加/减少 月
     *
     * @param date   时间
     * @param months 增加(正整数)或减少(负整数)的月
     * @return 增加后的时间
     */
    public static Date addMonths(Date date, int months) {
        DateTime dateTime = new DateTime(date);
        DateTime dt = dateTime.plusMonths(months);
        return dt.toDate();
    }

}
